#ifndef __APP_PRINT_H
#define __APP_PRINT_H

#include "stm32f10x.h"
#include <stdarg.h>

/* ===================== 打印模块配置 ===================== */

// 打印模块使能宏
#define APP_PRINT_ENABLE    1

// 统一App调试宏定义
#define DEBUG_APP_ENABLE    1   // 0=关闭所有App调试打印, 1=开启

// 打印模块定义
#define APP_PRINT(module, format, ...) \
    do { \
        if (APP_PRINT_ENABLE) { \
            app_printf("[APP][%s] " format, module, ##__VA_ARGS__); \
        } \
    } while(0)

// 常用模块定义
#define APP_MODULE_MAIN     "MAIN"
#define APP_MODULE_UV       "UV"
#define APP_MODULE_VALVE    "VALVE"
#define APP_MODULE_EEPROM   "EEPROM"
#define APP_MODULE_MANUAL   "MANUAL"
#define APP_MODULE_FLASH    "FLASH"
#define APP_MODULE_RTC      "RTC"
#define APP_MODULE_WIFI     "WIFI"
#define APP_MODULE_SENSOR   "SENSOR"
#define APP_MODULE_TIMER    "TIMER"

/* ===================== 函数声明 ===================== */

/**
 * @brief  App层格式化打印函数
 * @param  format: 格式化字符串
 * @param  ...: 可变参数
 * @retval None
 * @note   封装UART5_Printf，提供统一的打印接口
 */
void app_printf(const char *format, ...);

/**
 * @brief  初始化App打印模块
 * @param  None
 * @retval None
 */
void app_print_init(void);

#endif /* __APP_PRINT_H */
